🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / feature / discovery / src / commonTest / kotlin / org / meshtastic / feature / discovery / Check24GhzCapabilityTest.kt
Displaying Raw • Download
feature/discovery/src/commonTest/kotlin/org/meshtastic/feature/discovery/Check24GhzCapabilityTest.kt 8f9eec5c0819ec4d9b8a69e6dfc7aaacd86e30a6 (8f9eec5c) Text, 4.66 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.feature.discovery
Tff7b72import T7ee787org.meshtastic.core.model.DeviceHardware
Tff7b72import T7ee787org.meshtastic.core.testing.FakeDeviceHardwareRepository
Tff7b72import T7ee787org.meshtastic.core.testing.FakeNodeRepository
Tff7b72import T7ee787org.meshtastic.feature.discovery.scan.Check24GhzCapability
Tff7b72import T7ee787org.meshtastic.feature.discovery.scan.HardwareCapabilityResult
Tff7b72import T7ee787kotlin.test.Test
Tff7b72import T7ee787kotlin.test.assertIs
Tff7b72class T56d364Check24GhzCapabilityTest Tb4b4b4{
Tff7b72private Tff7b72val Te6edf3check Tff7b72=
Te6edf3Check24GhzCapabilityTb4b4b4(
Te6edf3nodeRepository Tff7b72= Te6edf3FakeNodeRepositoryTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3deviceHardwareRepository Tff7b72= Te6edf3FakeDeviceHardwareRepositoryTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
T8b949e// --- Tag-based detection ---
Tf0883e@Test
Tff7b72fun Td2a8ffevaluate_returns_supported_when_tag_contains_sx1280Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hw Tff7b72= Te6edf3baseHardwareTb4b4b4(Te6edf3tags Tff7b72= Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ffsx1280Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffbleTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3assertIsTff7b72<Te6edf3HardwareCapabilityResultTb4b4b4.Te6edf3SupportedTff7b72>Tb4b4b4(Te6edf3checkTb4b4b4.Te6edf3evaluateTb4b4b4(Te6edf3hwTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ffevaluate_returns_supported_when_tag_contains_2_4ghzTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hw Tff7b72= Te6edf3baseHardwareTb4b4b4(Te6edf3tags Tff7b72= Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ff2.4ghzTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3assertIsTff7b72<Te6edf3HardwareCapabilityResultTb4b4b4.Te6edf3SupportedTff7b72>Tb4b4b4(Te6edf3checkTb4b4b4.Te6edf3evaluateTb4b4b4(Te6edf3hwTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ffevaluate_returns_supported_when_tag_contains_lora24Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hw Tff7b72= Te6edf3baseHardwareTb4b4b4(Te6edf3tags Tff7b72= Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6fflora24Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffesp32Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3assertIsTff7b72<Te6edf3HardwareCapabilityResultTb4b4b4.Te6edf3SupportedTff7b72>Tb4b4b4(Te6edf3checkTb4b4b4.Te6edf3evaluateTb4b4b4(Te6edf3hwTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ffevaluate_returns_unsupported_when_tag_contains_sub_ghz_onlyTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hw Tff7b72= Te6edf3baseHardwareTb4b4b4(Te6edf3tags Tff7b72= Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ffsub-ghz-onlyTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3assertIsTff7b72<Te6edf3HardwareCapabilityResultTb4b4b4.Te6edf3UnsupportedTff7b72>Tb4b4b4(Te6edf3checkTb4b4b4.Te6edf3evaluateTb4b4b4(Te6edf3hwTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ffevaluate_returns_unsupported_when_tag_contains_sx1262Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hw Tff7b72= Te6edf3baseHardwareTb4b4b4(Te6edf3tags Tff7b72= Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ffsx1262Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3assertIsTff7b72<Te6edf3HardwareCapabilityResultTb4b4b4.Te6edf3UnsupportedTff7b72>Tb4b4b4(Te6edf3checkTb4b4b4.Te6edf3evaluateTb4b4b4(Te6edf3hwTb4b4b4)Tb4b4b4)
Tb4b4b4}
T8b949e// --- Pattern-based detection (target / slug) ---
Tf0883e@Test
Tff7b72fun Td2a8ffevaluate_returns_supported_when_target_contains_sx1280Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hw Tff7b72= Te6edf3baseHardwareTb4b4b4(Te6edf3platformioTarget Tff7b72= Ta5d6ff"Ta5d6fftlora-v2_1-1_6-sx1280Ta5d6ff"Tb4b4b4)
Te6edf3assertIsTff7b72<Te6edf3HardwareCapabilityResultTb4b4b4.Te6edf3SupportedTff7b72>Tb4b4b4(Te6edf3checkTb4b4b4.Te6edf3evaluateTb4b4b4(Te6edf3hwTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ffevaluate_returns_supported_when_slug_contains_2400Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hw Tff7b72= Te6edf3baseHardwareTb4b4b4(Te6edf3hwModelSlug Tff7b72= Ta5d6ff"Ta5d6ffrak-2400Ta5d6ff"Tb4b4b4)
Te6edf3assertIsTff7b72<Te6edf3HardwareCapabilityResultTb4b4b4.Te6edf3SupportedTff7b72>Tb4b4b4(Te6edf3checkTb4b4b4.Te6edf3evaluateTb4b4b4(Te6edf3hwTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ffevaluate_returns_supported_when_target_contains_lora24Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hw Tff7b72= Te6edf3baseHardwareTb4b4b4(Te6edf3platformioTarget Tff7b72= Ta5d6ff"Ta5d6ffnano-g2-lora24Ta5d6ff"Tb4b4b4)
Te6edf3assertIsTff7b72<Te6edf3HardwareCapabilityResultTb4b4b4.Te6edf3SupportedTff7b72>Tb4b4b4(Te6edf3checkTb4b4b4.Te6edf3evaluateTb4b4b4(Te6edf3hwTb4b4b4)Tb4b4b4)
Tb4b4b4}
T8b949e// --- Fallback to unknown ---
Tf0883e@Test
Tff7b72fun Td2a8ffevaluate_returns_unknown_when_no_evidence_availableTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hw Tff7b72= Te6edf3baseHardwareTb4b4b4(Te6edf3platformioTarget Tff7b72= Ta5d6ff"Ta5d6ffheltec-v3Ta5d6ff"Tb4b4b4, Te6edf3hwModelSlug Tff7b72= Ta5d6ff"Ta5d6ffheltec-v3Ta5d6ff"Tb4b4b4, Te6edf3tags Tff7b72= Te6edf3emptyListTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72val Te6edf3result Tff7b72= Te6edf3checkTb4b4b4.Te6edf3evaluateTb4b4b4(Te6edf3hwTb4b4b4)
Te6edf3assertIsTff7b72<Te6edf3HardwareCapabilityResultTb4b4b4.Te6edf3UnknownTff7b72>Tb4b4b4(Te6edf3resultTb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ffevaluate_returns_unknown_when_tags_are_nullTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hw Tff7b72= Te6edf3baseHardwareTb4b4b4(Te6edf3tags Tff7b72= Tff7b72nullTb4b4b4)
Tff7b72val Te6edf3result Tff7b72= Te6edf3checkTb4b4b4.Te6edf3evaluateTb4b4b4(Te6edf3hwTb4b4b4)
Te6edf3assertIsTff7b72<Te6edf3HardwareCapabilityResultTb4b4b4.Te6edf3UnknownTff7b72>Tb4b4b4(Te6edf3resultTb4b4b4)
Tb4b4b4}
T8b949e// --- Edge cases ---
Tf0883e@Test
Tff7b72fun Td2a8ffevaluate_tag_matching_is_case_insensitiveTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hw Tff7b72= Te6edf3baseHardwareTb4b4b4(Te6edf3tags Tff7b72= Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ffSX1280Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffBLETa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3assertIsTff7b72<Te6edf3HardwareCapabilityResultTb4b4b4.Te6edf3SupportedTff7b72>Tb4b4b4(Te6edf3checkTb4b4b4.Te6edf3evaluateTb4b4b4(Te6edf3hwTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ffevaluate_supported_tag_takes_precedence_when_both_presentTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// If hardware has both supported and unsupported tags (unusual), supported wins
Tff7b72val Te6edf3hw Tff7b72= Te6edf3baseHardwareTb4b4b4(Te6edf3tags Tff7b72= Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ffsx1280Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsx1262Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3assertIsTff7b72<Te6edf3HardwareCapabilityResultTb4b4b4.Te6edf3SupportedTff7b72>Tb4b4b4(Te6edf3checkTb4b4b4.Te6edf3evaluateTb4b4b4(Te6edf3hwTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffbaseHardwareTb4b4b4(
Te6edf3platformioTargetTb4b4b4: Tffa657String Tff7b72= Ta5d6ff"Ta5d6ffgeneric-targetTa5d6ff"Tb4b4b4,
Te6edf3hwModelSlugTb4b4b4: Tffa657String Tff7b72= Ta5d6ff"Ta5d6ffgeneric-slugTa5d6ff"Tb4b4b4,
Te6edf3tagsTb4b4b4: Te6edf3ListTff7b72<Tffa657StringTff7b72>Tff7b72? Tff7b72= Tff7b72nullTb4b4b4,
Tb4b4b4) Tff7b72= Te6edf3DeviceHardwareTb4b4b4(
Te6edf3activelySupported Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3architecture Tff7b72= Ta5d6ff"Ta5d6ffesp32Ta5d6ff"Tb4b4b4,
Te6edf3displayName Tff7b72= Ta5d6ff"Ta5d6ffTest DeviceTa5d6ff"Tb4b4b4,
Te6edf3hwModel Tff7b72= T79c0ff4T79c0ff2Tb4b4b4,
Te6edf3hwModelSlug Tff7b72= Te6edf3hwModelSlugTb4b4b4,
Te6edf3platformioTarget Tff7b72= Te6edf3platformioTargetTb4b4b4,
Te6edf3tags Tff7b72= Te6edf3tagsTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Served by rngit 1.5.2 - Generated in 0.06s